/**
 * LangChain聊天功能测试脚本
 */

const fetch = require('node-fetch');

const BASE_URL = 'http://localhost:5000/api/chat-langchain';

// 测试基本聊天功能
async function testBasicChat() {
  console.log('\n=== 测试基本聊天功能 ===');
  
  try {
    const response = await fetch(`${BASE_URL}/chat`, {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({
        messages: [
          { role: 'user', content: '你好，请介绍一下你自己' }
        ],
        userId: 'test-user'
      })
    });

    const result = await response.json();
    
    if (result.success) {
      console.log('✅ 基本聊天测试成功');
      console.log('AI回复:', result.data.content);
    } else {
      console.log('❌ 基本聊天测试失败:', result.error);
    }
  } catch (error) {
    console.log('❌ 基本聊天测试出错:', error.message);
  }
}

// 测试工具调用 - 创建任务
async function testCreateTask() {
  console.log('\n=== 测试工具调用 - 创建任务 ===');
  
  try {
    const response = await fetch(`${BASE_URL}/chat`, {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({
        messages: [
          { role: 'user', content: '帮我创建一个高优先级任务，标题是"完成项目报告"，分类是"工作"' }
        ],
        userId: 'test-user'
      })
    });

    const result = await response.json();
    
    if (result.success) {
      console.log('✅ 创建任务测试成功');
      console.log('AI回复:', result.data.content);
      if (result.data.tool_calls && result.data.tool_calls.length > 0) {
        console.log('工具调用:', JSON.stringify(result.data.tool_calls, null, 2));
      }
    } else {
      console.log('❌ 创建任务测试失败:', result.error);
    }
  } catch (error) {
    console.log('❌ 创建任务测试出错:', error.message);
  }
}

// 测试工具调用 - 查询任务
async function testQueryTasks() {
  console.log('\n=== 测试工具调用 - 查询任务 ===');
  
  try {
    const response = await fetch(`${BASE_URL}/chat`, {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({
        messages: [
          { role: 'user', content: '查询所有工作类别的任务' }
        ],
        userId: 'test-user'
      })
    });

    const result = await response.json();
    
    if (result.success) {
      console.log('✅ 查询任务测试成功');
      console.log('AI回复:', result.data.content);
      if (result.data.tool_calls && result.data.tool_calls.length > 0) {
        console.log('工具调用:', JSON.stringify(result.data.tool_calls, null, 2));
      }
    } else {
      console.log('❌ 查询任务测试失败:', result.error);
    }
  } catch (error) {
    console.log('❌ 查询任务测试出错:', error.message);
  }
}

// 测试健康检查
async function testHealthCheck() {
  console.log('\n=== 测试健康检查 ===');
  
  try {
    const response = await fetch(`${BASE_URL}/health`);
    const result = await response.json();
    
    if (result.success) {
      console.log('✅ 健康检查成功');
      console.log('服务状态:', result.message);
    } else {
      console.log('❌ 健康检查失败');
    }
  } catch (error) {
    console.log('❌ 健康检查出错:', error.message);
  }
}

// 运行所有测试
async function runTests() {
  console.log('🚀 开始LangChain聊天功能测试...\n');
  
  await testHealthCheck();
  await testBasicChat();
  await testCreateTask();
  await testQueryTasks();
  
  console.log('\n✨ 测试完成！');
}

// 检查服务器是否运行
async function checkServer() {
  try {
    const response = await fetch('http://localhost:5000/api/health');
    if (response.ok) {
      console.log('✅ 后端服务器运行正常');
      return true;
    }
  } catch (error) {
    console.log('❌ 后端服务器未运行，请先启动服务器');
    console.log('启动命令: cd backend && npm start');
    return false;
  }
}

// 主函数
async function main() {
  const serverRunning = await checkServer();
  if (serverRunning) {
    await runTests();
  }
}

main().catch(console.error);
